package com.njust.Util;

import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.kernel.colors.DeviceRgb;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * @version 1.0
 * @Author Imak
 * @Date 2024/11/17 11:42
 * @pdf工具
 */
public class PdfUtil {
    /**
     * @param tempPath 模板文件地址
     * @param filePath 导出文件地址
     * @param fontPath 字体文件地址
     * @param map      文本域：填充内容 的哈希表
     * @throws Exception
     */
    public static void getPDFUrl(String tempPath,String filePath,String fontPath,Map<String,String> map) throws Exception{
        PdfDocument pdfDocument=new PdfDocument(new PdfReader(tempPath),new PdfWriter(filePath));
        PdfAcroForm form=PdfAcroForm.getAcroForm(pdfDocument,false);
        PdfFont font= PdfFontFactory.createFont(fontPath);
        DeviceRgb color=new DeviceRgb(0,0,0);

//        Map<String,String> map=new HashMap<>();
//        map.put("uName","张三");
//        map.put("code","11451422");
//        map.put("date1","2023年9月11日");
//        map.put("product_name","产品1");
//        map.put("project_standard_number","GB-114514");
//        map.put("project_name","项目A");
//        map.put("institution","孝陵卫");
//        map.put("date2","2024年1月1日");

        for (Map.Entry<String, String> entry : map.entrySet()) {
            PdfFormField formField = form.getFormFields().get(entry.getKey());
            if (formField!= null) {
                formField.setValue(entry.getValue()).setColor(color).setFont(font);
            } else {
                System.out.println("表单域 " + entry.getKey() + " 不存在或获取失败，无法设置值。");
            }
        }


        //清除表单域格式
        form.flattenFields();
        pdfDocument.close();

    }
}